zim wiki

Note

原文地址在此
2026年加入了#我的style.conf这一节,分享现在已经不用的主题文件。

个人使用 zim wiki 的经验积累

编辑

浏览器复制当前页面链接

javascript: (function() {
    function copyToClipboard(text) {
        if (window.clipboardData && window.clipboardData.setData) {
            /*IE specific code path to prevent textarea being shown while dialog is visible.*/
            return clipboardData.setData("Text", text);
        } else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
            var textarea = document.createElement("textarea");
            textarea.textContent = text;
            textarea.style.position = "fixed"; /* Prevent scrolling to bottom of page in MS Edge.*/
            document.body.appendChild(textarea);
            textarea.select();
            try {
                return document.execCommand("copy"); /* Security exception may be thrown by some browsers.*/
            } catch (ex) {
                console.warn("Copy to clipboard failed.", ex);
                return false;
            } finally {
                document.body.removeChild(textarea);
            }
        }
    }
    var tw = '' + document.title + '';
    copyToClipboard(tw);
})();

把以上代码存成 bookmarklet 即可。

页面模板

模板文件夹可以从「编辑 – 模板」打开,wiki 目录下的是页面模板。

默认日期格式可以修改,我改成:

======= [% page.basename %] =======
**created**: [% strftime("%Y-%m-%d") %]

外观魔改

主题定制

官方文档:Config Files

zim 的主题定制分为两部分,文本格式和 GUI。前者可以通过 style.conf 来定制,这个文件的位置在官方文档的描述中比较模糊,根据实测,它应该位于:

GUI 部分可以安装 gtk 3.0 的主题,然而我至今未安装成功。虽然如此,可以直接修改 gtk.css。这个文件的位置:

task manager 图标的路径:

一些自用 snippet:

/* gtk.css */

/* 文本编辑栏页边距 10px,背景颜色和字体颜色 */

#zim-pageview text {
 padding: 10px;
 background-color: #f5f5f5;
 color: #282828;
}
# style.conf

# 改掉标题的绿色

[Tag h1]
foreground=#000000
# ...

我自己的定制效果:

sI0r40.png

zim wiki 已经实现四个现代化:

图标文件:

xchecked-boxchecked-boxmigrated-boxunchecked-box
xchecked-box checked-boxmigrated-boxunchecked-box

公开/其他人做的图标集:

我的style.conf

[TextView]
tabs=None
font=PMingLiU-ExtB 20
justify=
linespacing=3
bullet_icon_size=GTK_ICON_SIZE_MENU
foreground=#282828
background=#f5f5f5
paragraph-background=#f5f5f5
indent=30

[Tag strong]
weight=PANGO_WEIGHT_BOLD

[Tag emphasis]
style=PANGO_STYLE_ITALIC

[Tag mark]
background=#d9efd9

[Tag strike]
strikethrough=True
foreground=#828282

[Tag code]
foreground=#828282
family=Inconsolata, monospace

[Tag pre]
foreground=#828282
family=Inconsolata, monospace
wrap-mode=GTK_WRAP_NONE
indent=20

[Tag link]
foreground=black
background=#e0e0e0

[Tag tag]
foreground=#828282

[Tag h1]
foreground=#000000
underline=PANGO_UNDERLINE_SINGLE
weight=PANGO_WEIGHT_BOLD
scale=1.5
linespacing=10
font=Sans,sans-serif

[Tag h2]
weight=PANGO_WEIGHT_BOLD
scale=1.35

[Tag h3]
style=PANGO_STYLE_ITALIC
weight=PANGO_WEIGHT_BOLD
scale=1.25

[Tag h4]
weight=PANGO_WEIGHT_BOLD
scale=1.15

[Tag h5]
weight=PANGO_WEIGHT_BOLD

[Tag h6]

[Tag checked-checkbox]

[Tag xchecked-checkbox]
strikethrough=True
foreground=#acacac

[Tag migrated-checkbox]
foreground=#acacac

gtk+ 调试心得

zim wiki 目前使用的是 gtk 3.0,而网上关于怎么写 gtk css 的资料莫衷一是。正确的写法请参考官方自带主题 gtk/theme/Adwaita/gtk-contained.css · gtk-3-24 · GNOME / gtk · GitLab

要查看 gtk 组件的 selector 名字,请用 bash(windows 用 git bash)启动 zim 并加上调试指令:

GTK_DEBUG=interactive zim

使用方法请参考 The GTK+ Inspector – GTK Development Blog

一个字体和行高问题

已知 zim wiki 在使用某些字体时,空行的行高会变为 0,很影响使用。经过测试,字体配置不能写 fallback,例如下面这样:

font=Open Sans, sans-serif 10

虽然 sans-serif 实际上能发挥作用,但是会导致零行高。所以,目前只能选择一个带 CJK 字符的字体,例如:

font=Segoe UI 10

显示就正确了。

相关 issues: Dispearing cursor when click mouse · Issue #1210 · zim-desktop-wiki/zim-desktop-wiki


发布

导出模板

模板文件夹:

实验功能:创建日期

根据 源代码的这一行,可以通过

[% page.meta.get("Creation-Date") %]

来获取笔记的最后更新时间。 但不幸的是 Modification-Date 会返回 None,而且看了下笔记的源代码也确实没有。似乎在 0.4 版本之后 zim wiki 就取消了这个功能,真是非常的谜。